//计算器 可以增加新的功能
#include <iostream>

using namespace std;

class Cal
{
public:
    Cal(double a, double b) : m_a(a), m_b(b)
    {
    }
    virtual double get_result() = 0;        //为什么加virtual 为什么定为0
    double m_a;
    double m_b;
};

class Add : public Cal
{
public:
    Add(double a, double b) : Cal(a, b)
    {
    }

    virtual double get_result() override        //为什么加virtual ，为什么写override
    {
        return m_a + m_b;
    }
};

class Sub : public Cal
{
public:
    Sub(double a, double b) : Cal(a, b)
    {
    }

    virtual double get_result() override
    {
        return m_a - m_b;
    }
};

class Mul : public Cal
{
public:
    Mul(double a, double b) : Cal(a, b)
    {
    }

    virtual double get_result() override
    {
        return m_a * m_b;
    }
};

int main(int argc, char **argv)
{
    double a;       //对函数对象进行定义
    double b;
    string op;

    cin >> a;       //依次进行输入
    cin >> b;
    cin >> op;

    Cal *cal;       //这一步是？

    if (op == "+")      //用op判断计算方式
    {
        cal = new Add(a, b);
    }
    else if (op == "-")
    {
        cal = new Sub(a, b);
    }
    else if(op == "*")
    {
        cal = new Mul(a, b);
    }

    cout << cal->get_result() << endl;      //输出结果

    return 0;
}
